#ifndef IDXMASTERFILE_H_
#define IDXMASTERFILE_H_

#include <fstream>
#include "IndiceSecuencial.h"
#include "RegistroMF.h"

//Bytes a usar para la indexacion de posicion
#define B_POS 4

/**
 * @class IdxMasterfile IdxMasterfile.h "idxMasterfile/IdxMasterfile.h"
 * @brief Junta el indice y la masterfile para un uso sencillo
 */
class IdxMasterfile
{
	public:
		/**
		 * @brief Constructor que ademas abre/crea los archivos en los paths dados
		 * @param pathId Path al archivo de IDs
		 * @param pathMF Path a la masterfile
		 */
		IdxMasterfile(const char* pathId, const char* pathMF);
		/**
		 * @brief Agrega un registro a la MF y devuelve su indice
		 * @param reg Registro a agregar al archivo
		 * @return Indice que se le dio al registro
		 */
		size_t agregar(RegistroMF &reg);
		/**
		 * @brief Devuelve un registro dado un indice
		 * @param idx Indice
		 * @param reg Registro donde se guardaran datos
		 */
		void recuperar(unsigned int idx, RegistroMF &reg);
		/**
		 * @brief Elimina todos los conenidos del archivo
		 */
		void recrearArchivos();
		~IdxMasterfile();
	private:
		IndiceSecuencial indice;
		string pathMF;
		fstream masterFile;
};

#endif /* IDXMASTERFILE_H_ */
